###############bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb###########(((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################((((((((((((((((((((((((((################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####################(((((((((((###############bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##########################bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb###########